/************************************************
 * Copyright (c) 2007 ~ 2009, 
 * All rights reserved.
 * Version   : 1.0
 * Author    : lengsh@gmail.com 
 * Date      : 2008.1.2
 ***********************************************/

#ifndef _PANDA_HELPER_H______
#define _PANDA_HELPER_H______

#include <string>
#include <map>
#include <iostream>
#include <pthread.h>
#include <string.h>
#include "define.h"
#include "ConnManager.h"

using namespace netproxy;
using namespace std;
class Helper 
{
	protected:
		static Helper *_instance;
		bool  Startup(const char *filename);
	protected:
		string m_sConfFile;
		string m_sConn_Cfg;
                string m_sIPAcl;
                int     m_iPort;
                int     m_iwPort;
                int     m_iThreads;
////////////////////////////////////////////////////////////////////////////////
                int     m_iDefaultTimer;
                int     m_izWindow;        // 第几个小窗口
                int     m_ipWindow;       
 // 组成大窗口的小窗口个数： 1970至今，以m_iDefaultTimer为刻度划分成小窗口

////////////////////////////////////////////////////////////////////////////////
                ConnManager *m_pConnMs;
        public:
                int getPort(){ return m_iPort; }
                int getWPort(){ return m_iwPort; }
                int getThreads(){ return m_iThreads; }
                int getDefaultTimer() {  return m_iDefaultTimer;  }
                const char *getIPAcl() { return m_sIPAcl.c_str(); }
                static Helper *Instance(const char *conf = NULL);
                static void Release( bool bForce = false);
        protected:
                int build_return_message(char **wbuf, int retcode,unsigned &wsize, unsigned &wbytes);
                Helper();
                virtual ~Helper();
        public:
                int Process(char *data, unsigned dlen, char **wbuf, unsigned &wsize, unsigned &wbytes, const char *ip);
                int Timer(long time);

};


#endif 

